--USE CodeCamp;
--USE CodeCamp44;
GO


--********************************************************
-- Drop Tables - start with 
--********************************************************
DECLARE @DropTables bit SET @DropTables = 0;
--DECLARE @DropTables bit SET @DropTables = 1;
IF @DropTables = 1 BEGIN

	DECLARE @TableName NVARCHAR(128), @SqlCmd nvarchar(512)

	SET @TableName = N'cc_EmailItems'
	IF (EXISTS (SELECT name FROM sysobjects WHERE (name = @TableName) AND (type = 'U'))) BEGIN
		Set @SqlCmd = N'DROP TABLE ' + @TableName
		EXEC sp_executesql @SqlCmd
		PRINT 'dropped table ' + @TableName
	END ELSE BEGIN
		PRINT 'table ' + @TableName + ' not found for drop.'
	END


	--DECLARE @TableName NVARCHAR(128), @SqlCmd nvarchar(512)
	SET @TableName = N'cc_EmailCampaigns'
	IF (EXISTS (SELECT name FROM sysobjects WHERE (name = @TableName) AND (type = 'U'))) BEGIN
		Set @SqlCmd = N'DROP TABLE ' + @TableName
		EXEC sp_executesql @SqlCmd
		PRINT 'dropped table ' + @TableName
	END ELSE BEGIN
		PRINT 'table ' + @TableName + ' not found for drop.'
	END


	--ALTER TABLE 
	--Declare @TableName NVARCHAR(128), @SqlCmd NVARCHAR(512);
	Declare @ColumnInfo int, @ColumnName NVARCHAR(128); 
	
	Select @TableName='cc_SiteUsers', @ColumnName = N'NewEventEmailOptOut';

	Select @ColumnInfo = ColumnProperty(Object_ID(@TableName), @ColumnName, 'AllowsNull')
	
	Print 'Table.Column ' + ISNULL(@TableName,'??') + '.' + ISNULL(@ColumnName,'??')
		+ ' AllowsNull = ' + ISNULL(Convert(varchar,@ColumnInfo),'[null]');
	
	If @ColumnInfo IS NOT NULL Begin

		Set @SqlCmd = 'ALTER TABLE ' + @TableName + ' Drop '
			+ ' CONSTRAINT [DF_cc_SiteUsers___NewEventEmailOptOut]';
	
		Print @SqlCmd;

		Exec sp_executesql @SqlCmd;

		Set @SqlCmd = 'ALTER TABLE ' + @TableName + ' Drop COLUMN [' + @ColumnName + ']';
	
		Print @SqlCmd;

		Exec sp_executesql @SqlCmd;
	
	End Else Begin
		Print 'Column ' + ISNULL(@TableName,'??') + '.' + ISNULL(@ColumnName,'??') + ' exists.';
	End;

	Declare @MigrationId nvarchar(255); Set @MigrationId = '201302100031577_AddEmailInitial';
	Delete [__MigrationHistory] Where MigrationId = @MigrationId;

END
GO

--*** START HERE TO ADD ...

	--ALTER TABLE 
	Declare @ColumnInfo int, @ColumnName NVARCHAR(128), @TableName NVARCHAR(128), @SqlCmd NVARCHAR(512);
	
	Select @TableName='cc_SiteUsers', @ColumnName = N'NewEventEmailOptOut';

	Select @ColumnInfo = ColumnProperty(Object_ID(@TableName), @ColumnName, 'AllowsNull')
	
	Print 'Table.Column ' + ISNULL(@TableName,'??') + '.' + ISNULL(@ColumnName,'??')
		+ ' AllowsNull = ' + ISNULL(Convert(varchar,@ColumnInfo),'[null]');

	Set @SqlCmd = 'ALTER TABLE ' + @TableName + ' Add ' + @ColumnName + ' BIT NOT NULL '
		+ ' CONSTRAINT [DF_cc_SiteUsers___NewEventEmailOptOut] Default(0)';
	
	If @ColumnInfo IS NULL Begin
	
		Print @SqlCmd;

		Exec sp_executesql @SqlCmd;
	
	End Else Begin
		Print 'Column ' + ISNULL(@TableName,'??') + '.' + ISNULL(@ColumnName,'??') + ' exists.';
	End;
	
GO

CREATE TABLE [dbo].[cc_EmailCampaigns] (
    [Id] [int] NOT NULL IDENTITY,
    [EventId] [int] NOT NULL,
    [CampaignStatusId] [int] NOT NULL,
    [RecipientTypeId] [int] NOT NULL,
    [EmailView] [nvarchar](256) NOT NULL,
    [Subject] [nvarchar](192) NOT NULL,
    [ReplyToAddress] [nvarchar](192),
    [Description] [nvarchar](512) NOT NULL,
    [Salutation] [nvarchar](256) NOT NULL,
    [CreatedUTC] [datetime] NOT NULL,
    [CreatedBy] [nvarchar](128) NOT NULL,
    [UpdatedUTC] [datetime],
    [UpdatedBy] [nvarchar](128),
    CONSTRAINT [PK_dbo.cc_EmailCampaigns] PRIMARY KEY ([Id])
)
CREATE INDEX [IX_EventId] ON [dbo].[cc_EmailCampaigns]([EventId])

GO

CREATE TABLE [dbo].[cc_EmailItems] (
    [Id] [int] NOT NULL IDENTITY,
    [EventId] [int] NOT NULL,
    [SendStatusId] [int] NOT NULL,
    [TestMessage] [bit] NOT NULL,
    [EmailCampaignId] [int],
    [EmailView] [nvarchar](256) NOT NULL,
    [SiteUserId] [int],
    [PresenterId] [int],
    [EmailTo] [nvarchar](192) NOT NULL,
    [FirstName] [nvarchar](128) NOT NULL,
    [LastName] [nvarchar](128),
    [Subject] [nvarchar](192) NOT NULL,
    [ReplyToAddress] [nvarchar](192),
    [Salutation] [nvarchar](256) NOT NULL,
    [CreatedUTC] [datetime] NOT NULL,
    [CreatedBy] [nvarchar](128) NOT NULL,
    [SentUTC] [datetime],
    [SentBy] [nvarchar](256),
    [CustomContent1] [nvarchar](1024),
    [CustomContent2] [nvarchar](1024),
    CONSTRAINT [PK_dbo.cc_EmailItems] PRIMARY KEY ([Id])
)
CREATE INDEX [IX_EventId] ON [dbo].[cc_EmailItems]([EventId])

GO

CREATE INDEX [IX_EmailCampaignId] ON [dbo].[cc_EmailItems]([EmailCampaignId])
CREATE INDEX [IX_SiteUserId] ON [dbo].[cc_EmailItems]([SiteUserId])
CREATE INDEX [IX_PresenterId] ON [dbo].[cc_EmailItems]([PresenterId])

ALTER TABLE [dbo].[cc_EmailCampaigns] ADD CONSTRAINT [FK_dbo.cc_EmailCampaigns_dbo.cc_Events_EventId] FOREIGN KEY ([EventId]) REFERENCES [dbo].[cc_Events] ([Id])
ALTER TABLE [dbo].[cc_EmailItems] ADD CONSTRAINT [FK_dbo.cc_EmailItems_dbo.cc_Events_EventId] FOREIGN KEY ([EventId]) REFERENCES [dbo].[cc_Events] ([Id])
ALTER TABLE [dbo].[cc_EmailItems] ADD CONSTRAINT [FK_dbo.cc_EmailItems_dbo.cc_EmailCampaigns_EmailCampaignId] FOREIGN KEY ([EmailCampaignId]) REFERENCES [dbo].[cc_EmailCampaigns] ([Id])
ALTER TABLE [dbo].[cc_EmailItems] ADD CONSTRAINT [FK_dbo.cc_EmailItems_dbo.cc_SiteUsers_SiteUserId] FOREIGN KEY ([SiteUserId]) REFERENCES [dbo].[cc_SiteUsers] ([Id])
ALTER TABLE [dbo].[cc_EmailItems] ADD CONSTRAINT [FK_dbo.cc_EmailItems_dbo.cc_Presenters_PresenterId] FOREIGN KEY ([PresenterId]) REFERENCES [dbo].[cc_Presenters] ([Id])

GO
--Delete        __MigrationHistory Where MigrationId = '201302081917387_AddEmailInitial';
--Select * From __MigrationHistory Where MigrationId = '201302081917387_AddEmailInitial';
Declare @MigrationId nvarchar(255); Set @MigrationId = '201302100031577_AddEmailInitial';

INSERT INTO [__MigrationHistory] ([MigrationId], [Model], [ProductVersion]) VALUES (@MigrationId,
0x1F8B0800000000000400ED5D5B6FDC3A927E5F60FF83E1C70126EDF864CE2407CE0C7CEC64D6183B366C27E73190BB99B6266AA957523BC9FCB57DD89FB47F61495D7929DE44EAE6F44302B748158B55C5AAE2EDD3FFFDCFFF9EFCFDFB263A7842691626F1DBC3972F8E0E0F50BC4C5661BC7E7BB8CBBFFCF9F5E1DFFFF69FFF71F26EB5F97EF0A9AE774CEAE137E3ECEDE1639E6F7F5B2CB2E523DA04D98B4DB84C932CF992BF58269B45B04A16C74747AF172F8F16089338C4B40E0E4E6E77711E6E50F103FF3C4BE225DAE6BB20BA4A5628CAAAE7B8E4AEA07AF021D8A06C1B2CD1DBC3335CE32CD86C5FBC7B7F7E7A7978701A8501E6E20E455F2C593A7A43583A6C1AC3CDBDC36CE53FEE7F6C51D1E4DBC3DF833846ABFB604D57C315FF897E300FF0A39B34D9A234FF718BBE542F5FAC0E0F16EC7B0BFEC5E635EA1DD23EFE2BCE7F393E3CF8B08BA2E021C20FBE0451860E0FB6BFFE76972729FA078A511AE4687513E4394A63F22E2AF8AFE4F0DBF6573351BC591C1D13512C7067933CC8B18A05C63936C9FF35A377798AADE5F0E07DF81DAD2E51BCCE1F1B66AF82EFF59397C7AF0F0F3EC621362EFC529EEE10D039BAD59345AB0EB5927661440C76AF2386CD774FB8293DAFE32B1AB7FA21780AD745AFA04E1C1EDCA2A828CD1EC36D39D85FD45AFF5C55799F269BDB24A2ECA12CF97C97ECD225E9440216DF07E91AE5E61CDD26C926033922259F1B63A418620A9A066B7ED8D29ADB4E23A114C57E18D06C9E87D9360A7E0C64C85CE3778F499A77689A88D3ADE5AADBE758EC966DFFFACA53DB97C9B2D2D0D062BF45EB30CBD3A2F58F693482DE514632A5BBDDC3262CFECAAEB7A8110451CA7DB8F141F62C4A32E44CB70C15D9CDEE210A9735B5DF13EC9E82B8ABF6EFB0E55FA72B9436DCA165B809B0326E52FC5795706249DF2D0342DB3E36155CDFE5419AD356DE590898EF6582D3BD25715429CA307194E23A5FC2089D950598E7D3284ABEA195AB904862BBDA45C897D06FD230490B81541CDFA25D863C31FB0107C182CBAA01F414A26F2478D97AB523C5B82A7FAB19395DA37815F89259AD834FD818F15BF749A3F5CC17E99BD5970EFEE7AF2AEF0FCA499AADD479059CB118E7507CCE2249B14CB93A4B369B5D8CE3FFDD16F393A430777C2D914BB886C0ADA49A2DD7EF36411891B96710AE639865A68AC82F502C300BD5E9C4E9458E24896A532CE1B02D82B9A3CA6D39BB8857E153B8C2537DEC52F17078D8E532F58355458E15D504EE55756D7B423B0B80FBA658E4982B12B8E4CB6D39ABB20498AFAA50E48A291078624B3B72A41159455BAC4B99275C4598E3C9EAD94EF6EEB628F88AD25B9C5314242532E56A01C2056B885286AB598B5BE555A5CE54ED43DD5CE77D208940B840E4A4792870D196D873907D95B1907D8578A89F024C3445D65CE0C4348B12891DD5A500374C89C8115BECB486C007CBFD72C26C57D5B8563B64A247C7F68B011DD6F23A677ABCDFD72484DD16D5E8846C3F1AFC8F865AB6782A9FEF32576AB768196E43CC1621E24AACD0FD273CDBB51C38C77FF9D5790969F7F02FB4CC6D47EC1BE795C35BB48D7EDC27A7AB15CE9B32AFED9BCCF1CF51B64CC36D8785C3BFBC74EEFB5D10EDF22E8B961E147E9622328C3FDE9F392F6555A47EFF314290D9AE0C7A6162081525CF9DB05B3E9187AC0E337D6192A2580DF03FD367A2183CE367F851CCFC997A6E1B5635D17D5CF51F57EF50BCF21353EF51965FE16010AC9BB4B5EBCA28633C0ABE4C3CC498D139CCD1C70CA58E3D6896267C48E23E193E59781FA659970D4E0F91E632E8A1651361FFAC99D93E3972DF168E730F99112163CDBE5A0926CD9EEDB23CD9909573DCFE4BBF4B09D6ED1F0FD07ED7B4D06C6B054C0781AD974EDB53BEB34105B360D668BC545DC5510DBF6D3588D5BA54C16553C596C126426B38A4EA412CB67B3A721EDB3A4EEB558DACF629F573CE54CCB3ED8EF98287B58022412E357C9165BBF62CD0708903CD032E7A0A576373711605E18630300136865F61232C144DF7669A26A9C4C5F634BFC3F16AB7B59580EB11A68BEC74BBC576E87E2AEB22BB4C965FD1EA7A97BB92220EEA325987B187E494D0BA8EA33046A7CB3C7CC296E6816875F3A4E9671807290E1AE4E2C82E4D51BCFC715568A4D09E5689AFAD62D459B2D9EE7242B6F718F53C6639B35C02E67768D1B7220B2FBCD4F536EF32C8DC8F0E4169AF58AA38402464C6DED7950D3373F96AB29245E3A4B74DBFF759AFFF85643F8B9D3F65067EFF2D245A1F65A172DCECFF0FF49011C3F17DEAC4A4E7BF47C97A9486AF92873042378F496C9DDEBB6696778F618A93DA7F5BDB996BC31EB396F102BEBFA4E5260D9FF0AB1F921C598F3A7703BC4ED7418C8D201DAAFD0E8BA41667A3F9D532D9D9692FEB8DD689979CBBCEEB8D6647A5F95AF0F2A3BC96EC7C3754D5FEF4717388B9FA537B6ABAFA53D20B453DD5096AB1726F49B0F1E2AF3C0DEECE65F3E6EF61B24E83ED638834F38ABAE20F9871553DF95C03AAEC94D2F326D925B367F6D717FAFA559B5D2604265BF936973CADC974DCC2707625BC1334F03A96CED08CEFA6B282EBFA1A8B96E7BAA2DB4E4CC5D17E4AEA7D4A7A1FE6D6D74F3DCC69BA1F4E7D7574A4CAB36D3CC315D65C1AE2177C5F6D1F38D9AF6FB37B39A2863513A66845C034C69803ED272E3FC3C4C5F0F2A424BA749DB25477C957EA7B9D5C2D301C4AEA8859B4AC623F173F9D42B97626E3C8BBF4EA625BAEE0972A95714A57714B9839ADEDF30EF6F4240E0D63E5E6926BA0FE727CD23933BF50D6543885028F4A7061602DAFF9BC8B03D3B2ABCAE7551CD79A3263B9ADADE0B9B9ACAB65BAA9E9340B2914BE7705CCF640055F32CF7BBCEFA32449A58C1B25F1C1365816A27672868FC9B7FBA423168F16B1C605628F1F5930005FCF099899A3D5A65E8C3BEEE4001AAFB47702DED721C6F1005EF0CE0AE4B4F2CD925237E8B878654FA3C3D4CB181B831FFB12E88C9E07BF5D26A0750242CEE0B21EB98733EE2BAD0FEC330A97B56FF3A9A76445029A9D1A67C6011CA229D2451590AFA261394FE53F879C776FE2738E765DC2831A474A080A02C2540FAB426AF357AC06D1A3A39BA31776C1F7A3A1A7CDDA52BCF63B311DAE6376DDE0F571CE4270D6268732DC4EF236070AF6B6DB8FED56376987D8C8EC68BA5E4EAC480F69A98EB774325D105E746FBDFEF3909FE324798734C803662E3F5C4CF0755D9394FD772B7A1A280591719313C56E7A57D85C453202A1EB76B4CE3DFA29C0E62658FBBFD16176DD9534FD5F285C3FE66E63A220F447B8CA1F3D8CAD99CCA8F933439345823544A7163D8037B85782EEBC1FF5CFC5D2277C984C8B3B2E2E5A0990E4E68BB5D9D7ACD94590E3A067F49E041E071C635C31888CCED771DBBA6408EE87A5A054F72D8BECABFFD348A5EDF8B1316814C8ECD0863FE5C91EA01168474F51CD846F3FE77B18E6F623E439ED9373343E25D12ECE114AB30F08AD90D7E1DA213AD88E088368E1679FFB3259E36769A785E3FADD8B73FB5141BFDB68867C4E719AA3E374BB8DC24E9F68645090AA62DB75B4644D944DBE1119390F514CECFC81BCE9E35ACA257A42F6D323E775C564BDB64626FBD55D0FE4927297D4FC48D9B4C921C45BB4C1C9F9C58D65CBBFBC716DF82A583E86311AA7D7F78F290A568E482AC2791543FE5F3BB3FFF1F6D2D657309871DD14C6428F1B7F6DF2AFCA96CDC2F677F2657A7B0F797C646B2A16E7B923B4CFF3B8DB0F51A7E1DCDB27E90943AFF6BB1A33D054816B1517AAEA3AB05A659BA20C50785AB67A661B733ABAA247F51A6E1D7CA6C8878AFB588D038066539CD57DA6ABB79329792D61754151D52B440EDF0E049423ABA365BA33688EB9A0B5323613AF877D8692A48BCF19C8DB4CC5CF3C4717A1B0D966188BD6DA1449ECB42DEF61EC6B86BDC988D70FF62E8748EE8368BF71D7D3BD86E8EBB887489497215813006F44C055540749987A3E4E9214C70EF6F6B93F4EA2B49ED32C4B966121BCE6942EF86D5C96A777F1EA40F905DCC6D24B39431FDDC522DE457948D684F1C3B7877F127AAE6DA559E16F5BA9122E96F44B813436779412BB2B8E1966791A84712E8E8D305E86DB2032E2827BDB706C11D534EDF025E7688B62323C8C846DC2807CDAB8681AE3C6BE4E54270BCA88D4B6057DC452A672E5172D297DB35F16323729D5D73007B227050B03189342C033B124EABB574A2D431FC1E22CA8F826A8ADF5001FCF1AD272C4E687B21A51A0B3B218C507D6410DC35F26F36741F077700D7DDCD18B17FE8D0AE26858E382646E6464FCF75E4731361E715A660452F8E956F9D4052473E392C1560FE49E24CD0F604112814EDF3D0158E07AE58AEB1EDEEC46FC924A4BBA5D8DE9CB15C9F918D48678F99A342E5FFE1CC8921400CB32B59BA02D53EAE781B22D0CCC0422DEC0863D99999E9B01CC4D2F7C1326D4C8E303DA9D26E249904B05EBEA6054E3C43AB0F1E1CC666E718E455493695402AFD66AB4043B33371118918D22D882BCF5622560FB0358092848937669C8C271DC09886F2775016A5451CABDF0A0B5367E468DA8A7B64E5FEE46C5C3106E47256893F66B58DC6918150C5DAC50B9B095D393690920CEDA08D99781719C8C61639CD08DD270D9975506B2340E3F50A677199860ABEDF6D683B93549300807CA88E0D607B01B5898D3CF89E4688EC6EE42BC06D6935F126FD7E84DB52FCFC4F332866BE2056FC2037D0172CCA91A8DE7A8995B81E08E42482A10E8ACE76DE0370B060B77521E869BC301C29D45886B3010A571480444A4BC859DB188108A438533BEE12122192FB81904311688D260CC33A0AC1E7D098376A9B437FF3E846A7B58FF4109D328040523CEEC659FDF315E34D647223F8BD36347252927632C4BCF304229A148A55660844B4A5982087E6B6373465F9B1D704BC4809F21ACCF4009266C8CBF2DA2C41495598519C02860152D886D975D5FE5077887B341137E06B0411325CCC306DB7335DAC30562D51E4E3C8D7BB840CEC700462597AF51401DFB7001F40D72BDBE95BECBD196BA79AA3EAC690C1FA590F13C5C930A4158A67C2338E1D60860986C0B633381241E6831C2809501ACCE4001D35FB0A8D8E5A63999DC9DC1F54197065900E872F4E4E5734FD3396EB709130D916C307901F192C14912281CC3291204B73CD4391F2517C34E8900614F7FBC99DD27D35E23EB707B6CD44B6363DD159BE915310AA556BE132042D6D2CBBC04E3D3665F4140B91D6C63816F79909D055E78F3B0091EC555A54E29A42B6B2514D0AFA5BD487189D566E8D16E241C0C644012019B6D3C9420C2533124ED510B23CCDD9E0C4B79D88241441DCAD046387261A00053C31BFDE0457312571DE1D86A9099C98E2BAB0C8CA33A70B4835B1FC07E60614E3FEA2930BB641A3601F06AB5CD43D159989201FC17731CBA451BE36D8B97EC757C8E2294A383D3259105F9767CB60C56222CC60273E3C12CF53D19C044F57A3361A27D6B3236ABDD6ED063B7F562AF5D3620A667AB236C5FE8F4358B4D0C18A4CFD47686F0A7B6117A6A9639B6039D65A86F5CBFC6149B7A7223EC667F2D6149109FAAE1098C0F6672822E4C03F5146CCD303A1B0666079B9B73381E3712CF3708CB601465E6A2C55404379B0A90CE6E7B4D2022A3C909D0B1ED52D387016C53A32B23FB1CF4E8E8BB021C916C66E33750DA4021AE1081123A7F283E5DFE5DCC11C95B7728AF5777823846ABFB609D1D1EBC6BE016EB159BBA10B03E8E4CB560015269D67D34448A8406A25065909AD779A441889208E8A8E389C66602796381AE4CC891B32F5252E5A9220D99DA134254DAE0A321429D1F10A9501BF53A5E84D308004FC2EEBF1951052D3D09EEDA1B484BB866A8214A6E824384CADBF39A97A9AF870904DA657133C948462C7D1145C70D4CC1E455F1A433C80B70C8DCD424EBE3AB21521A2775745843193CFE03D1969CBC329788D48B89E749B444A57ECCD47D151B11A096C9569FC9CBD4BE104885AE60404F390698ED210DB1EA4372B081345FB7D38FE70824504E0C4C5E7E25D537BD84ACA154F8726A310022272CD598D1549333A2C4A5461ADB2ED35733D32E80A115F65D0282F3C4A884481EFDEBCF585095253900B496C624D81ABCE8A66F600A2264825ABA75DE4ED1AD6D8C4FBE594918480942330644A4053D66FAA1823DA63BC1A5520AC9A8808E7B130B05CD2B13890CBD57641EC0EFE54551A5813A310088BD3D8B80CD6895A290C3D2CA3A0202D33A890684A235B6BB0EA2E29152011129C154998EC8E054A90ED0A9B542243200D53EAC0580FE544A015EB693B02FACDBB9C84258A7A38851D328678928202C01C998025EB20B3D7AC84BBA73E2BC4C213003904B232D74979C7C3029501AA13EC807523B13D44B628041C4E20A021D57000F322CC3D08314CBD5B455D16B186C902241ADF0B86B1CC4C98334AF07D46375A784D4A32D415C1C50998412444F27671F026AD6270C6404AE4AABFBC32F4CFB9314BF186D301A3BC88B432E03A4A4C236637A204137A3F8A6A6B00A4948F0CCFAF023722C2E1373814F93AAB52A9C26F56730C2F95113C9778F3A349E943CF44851A7A0C801E14E89665F2EBFE9E3108434D5D3206AB091A0F1030327B1262F4027D1BAD3F557044BEA65ACB0903F6A950BA0403205D1B0406EAAA6818034D2F391A4EA4D5F0379A34E22F5C3A06B7A3ACC905082B1403233066F91EDE0CAE15BE81E42EBEF2AE99900B6F495DE2BC1445493462DF8083CE353C18F407D64B61A4CA6942AC491BE8408A0612817660CE6DB0AD40C97E598A1E6DB10AA8352242646A4827F7011CA7086A2C22600C4630C65C074CC04CC80EAA06CEF4D213A13F8825E56412517EC21CB32B98BCFDA83E636BEB64346D4E411D1EFAA0D7CED5E1D14A517F465E10ABAA20F07420389692EE5F7926EEA36A34CF7A0B45B4F463B4EC36D345177A2C1D9047C639A9B100877A6998CB8D8D9564E28845BD27DF594BFE92BE9B2F242B0C0BBEC4A302F04E906BC962238D100C4EA472AAA5509E35BAEBA3EA95626DCA4A55C98604F36384B8FBB7309084C752B93E989E45EA6C9CAAE8A4E9F234A718B109084E99D43A63706B70EA99E01C733149232B868C82C19D38748BCCB4E355D30BBF9A6EC9B6AEAE026B5A1E611F0C52A0369D99A584FD635D4706C6FFA486523B90C04B02F5E0712E5612A0AF106103FBAFCCA403FA2EC0693E938B292C760BBDE921B11EA6980FCF2842C5F07AF4FC01381EA889AD93C00BC30E1B69648AE4490F79B93F94DD9C982EC766C82EAC1C9025759A26D8E67B957C90A45595D70156CB72420B76F564F0EEEB6C1929C1CFBF3DDE1C1F74D14676F0F1FF37CFBDB629115A4B3179B70992659F2257FB14C368B60952C8E8F8E5E2F8EDE2C36258DC59299A3F2F7089A96F0843B5823AEB4BC60F03E4CB3FC3CC8838720C37A385B6DC06A46F710EAF684EB08A2FEEA3382F52BE46FF6D6C38B77EFCF4F2FA97B0B1C915692EF71E736D84116FD447436247F17BF7DB70CA220ADAF7E50374FCE9268B789E53751E46F93FFD9F7CB2722859305C73C2FA2852023CE6879A99BE9A4C90F5D542239C560A211E9ABFD28A4B9574B93905EB69DB162AB0CC141AB600E64A052C97BFDE8F33CCCB651F043540753604EEFEE314973911AF5D89A37EC4B61DECA026B7A97C9B2884C20CDB6D09CEE2D5A87E46E1A79EF631AB17485420B5996F1F56EF7B009CB487BBD451CDBB23A2EAD9C4549C6EB4F56C9D6736437BB87285C42FEA329B2D6E81D36AEEB7445D24E40A554A925B7777990E6A2F9F16556FC2E131C4297395A350BCEB8CE97304267650196ED691425DFD04AE88CCDAB16FAAF0E99C0AA114BCD29DFA4619216C2AAF8BC45BB0C81BDD354B5882B495C325A11434F21FA56CECC986023AF66DED6E91AC5AB00961B5F66AF8F4F61163E44E83EA1772620D58015EDDBBB597D119C175F3699E82CDE257108D4C2BD57FB98AD27F15CD2311905C176A66530DC3D0797B44E75ADC324BD53BF3F6D3BA9F9C6D12FDF653C41B1D426895A86DB10334404CF13160A2D7A4EC4FD097B77AEEFED630B57B97BF8178EB39C8FAC1FDAF4751BFDB84F4E572BECB133BEAB6C99457281B2651A6E81D4962EB0E86D10ED722053A69F5B584E8A70B2B4FA787FC6D90CF5DC9ADAEF3F4062BF0B775B55B43E6E572067F4736B6A3C67D4E369F9C4F2A48EAB3F2C80193AFA42F8DD69FBC13B9CDDC13E902D31A7788FB2FC0A8FF8E24E2F4D9029B0F47BB543167ACC178EE44F29CC2246860A2C233935E6DB37ECE442F1511C4D4FEF13A09FE4A1399D6241584CB0A8C7E6B42E038854FBF4B9C4B29F25F6606F910B6C350FEDE8F00CD5CF2C7AB6CBF26453EC49C4F94BAE7B5C5947AAC70AAAC7138A8DED3EA04368946D731A4446F9ABFD04C6693AA9C2DB82AE852DB148CF8AB0820A415F64D98E5F3384CABB51C7454FA1B02609D7E8D6C25914841B627CF226A82A0E6D68E8DBD22E5E92AB5652C5BC8D8BED697E87139BDD961B11D4730B6AD9E9768B35C52F59D2CF6DA85D26CBAF6875BDCB79725481DD58BB4CD6612C4411B6C48EE2751C853122F0864F58C92069A08A791B9FB06315627BF3F03904F6F12795D2A53EF4AD98F014A3EB7A9B0B960856984C60565E26308ECCD2FB2E06A159F1EEC427AD5EA75BD3CC18EEBF8539568D488C29183303F9033D6444E0FC7A39FDDC9CDAEF51B21648350FCDE95C250F61846E1E9398931B5360730E204C71B0FDB7700EA0793C9697F7E94BFD7AF99B347CC2AF7D4872C4D91A5B624EF13A5D073196760AD0E4CB26E3E14D6E8D994FC17870D50E53312D89A156A4280C65E070064C6B5C25FAD05D7795CD2D40DF87397F50A17A34E22E5029CA2BEC7ED2308832F18C0054612CE75E9F53922CCD738556520D53B42210466250130AF7C1E8F9042301B0C7C5A1F188DA1D3C9B96443F2E8E18B7B02B5F3DEB3780C99D65FBED47D663CABF09399A1995D8670EA60361BB19980BFC5A3F26521F45E7A9D0CF873C91F43E4A126EF5B57A6473DE651B90CF80F0E75CEAA75607A3BFDD27E0114BA6643226DB5ED975305BD93D6503D395BF3AED24CEDD708103EF96E78C8BC3C944809CA5B58F2DE412AF444ACDC3C9982B0D27E63EE7E8763D4AF5723F46EB35A00682EBAE1E4D46C9AEDAEDA6D601F5F9D35CAF8250DA5C86ADF839950EC3D780483F6AF7BE5054B22FCED5A9E7933105106CCEC7DE4EFB011C874D1E059179D84275B886CB60EB8793B102090E9A831DC01F2BB23705433AD30E08E3EED68D1F64DCAFF30A5FA8720A30835EF2F56544C52B4250699F4E48F1EEB7C2BA5F061BF80E58F11D28412BED534B4AFF85C2F5237F38892EB0A4F747B8CA1F0172D5F329E7C6D295F669DF752B61EA9CA64922FE9ED13C097A6DDA2ECDDD1880DD8CA96D6270D87E8E9621A76468232A02FD580B69555CDB289FD95191EE3A706593D2BD9FA55C05ECA4A1E28756FBBC175265743EE1D7F1EC0DA5D9078456FCB164B17432A6487D95D4C10E9BCF97DADBA0FC55E954A77AE3E29C9BEC50CFCD3577BA255F9507AE3531051613B1644D8C8760D644027F548915C5F307F2A678E69B29B1A0889E10CF5CF9C88AAB357F91A27E6677F5400CF7ED539B3B6F1B1CE12F6EF8DB6EF5538B6397C1F2318C91C816536011A21E5314AC84E0D43C1D6767E1E3ED252774F2C0424AD0BDD82E7762BF13444161F4518F27E32B4B404B073709418D1AB848F8B57EC233694BB4FCF6E9B494F1CA7D09498EBE6CA819D9CB3FB97E4490600725F19F12B7D79496824AE0AFC0992D5B32D6950F6F2832A35FDB1AD7503DD9A89379DA5B266493635AE34F6B45029EB39F5D0D42CB6D5303A6D04F70F27BF225FA2AACE9360F27A4F7625FA1583DF7B1B55110EABEBF21797DBFC9213E1FDE84580476D68EA4DFF1524319436FD8DE952240F3505221FFF097283923EB2AA942364624D7F0D09DBD0A0FDF90BDAE873A7CF93E65A7CF927815124B39B8C83EECA2E8EDE19720E211806502E5C1FE456B1430FFF92ACD58A89E34BF1BCCFF0A6F9FF91040211C02EB5F0825ABB0FF7900FEB2CAE1C14D85B581A5F423CBD1E605A9F0E2EEBFA3B388E00AB615AE8238FC82B2FC3EF98AE2B787E4FB008707A7511864E5A71AAC3E2DF0667174BC40ABCD22CB5611F0610132E0EAD3F330B4FEC93F91A0AF5A8FB7E8CB81CC979E2CF8174F801143DA7F7B1892FE1723F91F08AB87E43B3701B92C1D935AA8E0F4F0805846F0403E115159C74249BE9C22960DC44F41BA7C0CD2C383ABE0FB258AD7F9E3DBC397C7AF3544691FA8961D08823F5BD135332AAA8D094B1F589398ADE819D47B27F189B4290C7C05E55F8EBB325DEE6D2948FFFAAA2BE91615DFB34C04747CDF3297C0E397CD907B9179B1FBE64CB682C377A4CB01E197D41E42FBF12F42DF579CA165B8215B4238EF588659F101A29758AC24CDC0C5F6B6C763E13B0AC012E5BEBB80445CFBEEB434E0F5DD092B50EA551EE4886E284F77DA7678B07A77B18298F4EE646B1C7A9597F8EBB1BAFBC6714D8DE93EDB10378DEC4224AA55ECD1B12E7E99A72C720CF69F59AF227E7B775A02647B775214B6B0C23E8EFFF2ABBD5FA9F16E5576F7C63E2AF2C0B7E6E44DDC3583E4A120FD9797F69CD300BB9E854DAFCB3BA609D4AABC6F2F448165C89934D11285E161CEA343B89260A9FFCCFE8CC562EF4E878160EF9EC508A8EB204726B6D5A347A4B6E23AB3C72C6ABA759240AD7B76CED49D27CFCEA3BD02E532E29F4B98FAD9434903E3EE16476A187773119A50E5E1DC2D126F6BF2C78EE48D43200C9A3EDB08382D47651EE28CFC4997DC0CC066F7EC586078F61E1BA100DAFB6EC5FB5C4102D4EE37F6D1A0ED2AFEAD17BD68FCF6EE391D03DBDE9D0C0BD6EE163024E8EC6E441B70F6924C9A7C7BAA9F48DCDE59B2D9EE7222DDE718DC27374F0456E9201C775313358EB992A31EB30DBA3EA69D3EE650330CFE0CC4BA5F5BEE35AFA091D73DE7C10D12BB67BA0C2ABB2A71B00E8B1442BB9267EB19813FAFDE9BC7F4E7D4598C5CCFCAE7C172079A5C298FF699F97BE56937A0BEF4449B3E4CE8D7A06C76FA1D37309AB37386E1C05629FBD8DBC4A0122FDD738430DD7179757474D4D5C4580075BF8ECDA3F31540D4BBEB4AC04DF71A70F651629428A1C4279FAD67AAA1CE470E2434C288291563D58958E1B355170D393EB1632E150479E779618B3DEE608B0CE2B8F7250118E665B6C634D503535E0E5C52483625A56EE7566B141B631AB619EEF3B918E127100456BECD7CE83E1B314F63D49A9BB9067B7AB67AF0350FA790AB5D76C2EDD7B52500D03FBB421A0469B7E9B0B13E0C509867AB120FBE6AF2DB055D3CE173BA59E641C72DD0F2201EF0795D7B68A1022C1642CC29D7B801DDB54BE30538DAC8E8690FB06836E0ED0E118778B6563B55750EBAA6A8C20C9EAD666BF8619739200B39DCC3645006D93B5BA9CF7ACD44A42182FD7A37021833D7CC00E428B97A43A0DFAD5728D7BDD80403BE5B36A53F6168963A3328BC8E56C702F0BA122B21788D37DC4C395CB7C7654104027BA22D3EAF9CECCB23EBDDC116AC574EF69737D6C77268D45EAFFCB610BE9D770E84854788B5D7F6FBAC04CB57316CD883C5465264AF5AC177DCD96BDE661EB7C5F995533E3ED229C762438D87589C6DDC6C415F8759049081DDEE056828402506AD9914D598B3D0692D298CA75EFC6C630EEBC4BAB3B783DDA59FDE29764BE371B19B812C660AB63267452BB15B67EB6B3DEDB056F0AF43AEB50290AAB3D5C2B35C70952994C2C0E48E207D86B2183CF73F20FEAB06CFABDA27F8922FAA2757BB280FC9C414B786E52474A625D1A01FD254DA872CA13F0984B011A194E8B8D85923606CA188467B9386F132DC0611C33657CBD03289141B7A7CC939DAA298981CDF3993B6E4C9CAA2A1CB0D125DEF197853B5C679BCA8FE352F2054D1D4C4C2795B821A8E6B9216C1007EF46F0E2CAA15438A2D99B72128C0BBA66B05049867200B28308004ED974F9F81E64588A3A96B5D0136E73C788F5EBC98A041588FD0610D83C7611AD94024B025AD169B0AB412DB8733B008B88B533006D5B76706B603D9D5CA56796D0D5A79D4D3199882F4DB10E3DB82FA7AEA10C6D070D07FAE60694B73CB15ECCC6CDC5CA1D5FAA0A1601C0B183214D819C1E8A180BF62EF3F22A8CC41B8E0CF98985038FFE0A0FB58D14463846025F0555B41B1903EE7661F605727641DCA4F300D914C4A3ED4E598476802C9142C63B0C4A2935DA83E47369CCBE83FA9B4703533D5FB0CD2491E83E13370B3BF55595148EBAB7C60A1731EF28151BE50D88B15883DECC90894F01692366BF0886918C350D9C204AC62C86CA18B618C9D2D08B62139EDDF6AB5A9406BB37D382FF3807B3B21FBA06F778C6220C4737D967C5DB1E3010495511885224FCAB73A58E0A87CE3E844E3D68CA2F0DAE2FACF14AD3CC9DC72452BCF3272B2D8E0AB0CBC8E40A046004AC5E3D9670312D01A496BA3E701AD0D880030D490E53406A86A8A7A37D5C2B03AAF107CC6F1F2C100C7120DAC65766EDD50B7237B74014A68E07D0411CA8819EF40F133D84BD0E037495A1D7F3741C4391AD65A009C259026553C7F6BD1814B4DD65A4014A6FE63090CFE449394D49877BC31C0BC92343C9908546E7CF4BFEFC0834649220E48786E66A146C89AA8450C742502BA09F14C2E40CCE7DE03018E196282917DE56618E4C1BC952C62574D56C32D24D3670071CB524F3A4553F84F3C29BAA8A70504439D78D0BD0CE74AD2628D22351523D06F20D195784D76D9489A82710CB991D4D14846DF4AE200293E4B113EE8EDA0A60ABB29D43EE6ED84EFD9757C8E2294A303F229C4847C9530C896C14ABC1BBCC0CDCAF8E0B134686684B29E8E37C0C2EAC7C494D82192265B0E2763617ECF523F5BDB1AF23C7617CB1AFD54366F579E12DB676A4E93F6525370504DF453C63D21E20D6A4012DBE939C20D673556616D0AF632A35836BCED0C1FC1E613BC388427BF673C7AB1221E934AB2925B96CDFEA0880A804B6653839E167957E01D91FD07FC064A1BAC9B152A3E39711EE4C1439089C18CBC7587F2FA605B10C768551C0178D70028D52705DB32724A7213BC3D5C3D2458EF250AD372F9B9A991010B015C43CDB143B19DA648D64C5541DF4A95D2094D54CF25F48B523D7111B8476847AC226992AF68D035166D42EC225B2EEB2A5DCBB0D1F2CE39DC6059A66A8CD4D037D44644A19DB648D24C5D41DF0AB5112E34439549DAA1AE6D69BB23DCAD12BB255491754FB83466D8BABC515D5B064D0827C1C5B6842AB246B98AFAD6CBE3C7428BE563492BA4504FB95D9414A8B745921648853B5CC15841B0DBA50BD56A3272BC70232AEA4664A1D3426257804AB22E09552D86337506453EAEA94ABA015E570D919E09C90107810F493D092B606D2BADC842A15845AF91AAA2B6715958D44543E32058EE5001D64C1E4BCD39FB6A4699DE9300DBA02BA85AB37005ECF60AD8AA519BE62D361F8E105B6B8BA096826C1BA3FC769D7D8E92F52BFCA7819F26734BC04F93C7523F1D198C3A7AAF01A4FF4A6DDC452BAF0C133F61814E6851A82169B64853A88AA66D2B9B3569D1AC31611AA7F21E650DBDF320F54C9AA68076A51EA42A56BB91A292D822358F12A725D5E2F10155899B9D40CBCBD00273D3B1E6893019846E6851AFB50FF9D939DB0583EE49A04F816E9A80A43A775736832A5E170B9DBB0FE17C027DD7C2813A771C9CBC95EFB2257EBA4C815ACABA2BC3BDF4D3557ACAD876B37CEAB38BACF0945D55411FBA6B6A3411B4B36355EF652BB1E04235C573FB7022DDA5A6CBAAFE4A0F8DC367E529B6A9A7A37699079C03BAABC4A4731EC796E271EAA2CA8875186C9E8CB8FFEE2A40C4806E9B428E793369D992552942A1D0BF389A65220361487602A0FD12B1179312830C180A726F261852CEE37E243B90BB39054692AFCE9A584997AE81783F5017F5C040DC4184848D3CE503554725EBB5658F8542FF5D578D6E23241C3FA37B6C31B46B390672901D2605D11AA88EB40F27240A16B204E8BE02D3A4FB9CD97ED874E81A07CE01F44D05DFE1ECC4AC6CA0BB87A69128E46E5A8A57E1333A537B1AF4ABC5639FDD2D082ABB0ADC3CE7AFDAD34A11191CBC7B2DC60064A7300081BB89EA05D14553AA0BF590DE8C2FE0FBCBAAA5DB64A56681627FF32AE8E6B86A86A5BD69EE4D2CF29D3B960855EC2C16D51569402AC637AA9D07877207B1A021A9E17300D1F781D543477A73D83D1B97EC5EF24305DE8EECD27DCDA2789F6BE1D012B8BF956FEAA627E8E6E17BA01EFC7CBB3F5B397AF2C04B77F86B8D927E296F3FDA332BBC216E1237EFD2457D7459357930BEF3277448DA1DA369C49022515C550324627AB18D9B22F0FBCAD544A17DAC108664A3B82021947917876A15D5EC0E96A7B5D471C5606C107D38C031BADE5E5C91765A72B745307DC1E80D3A2BE9A7FF2EEAED7B28D3EEB7CBB2AB01EAB44C7E8BC0CFCC1B3E1AC2A7666599B108EACFF636C7D89BB2934579C8A37A807FE2943758A3AB6485A2AC787AB2B8DDC5E47BDEE5AF739485EB96C409A619A325736CBEA973117F49EA03FC1C477515EEA3C457280F56411E9CA679F82558E6B87849C446969C3E05D1AED8147C40AB8BF87A976F7739EE32DA3C44CCC485DC0250B57FB210783EB9DE925F998F2E603643F209F4EBB8582D6BF87E0F7C4E5942825C2FA83E454D7499934F52AF7F34943E24B121A14A7CCDAD887BB4D9469858761DDF054F48CE9B5E86ACC44ECEC3004F21375945A37D1FFFC4E6B7DA7CFFDBFF038CE5D0E9303D0200,
  '5.0.0.net40');

